/*
 * Software for Interactive Project Pool Game
 * Columbia University. New York, 2008
 * Authors:
 *   Abdulhamid Ghandour
 *   Thomas John
 *   Jaime Peretzman
 *   Bharadwaj Vellore
 * 
 * Desc:
 */
#ifndef _TYPES_H
#define _TYPES_H

typedef enum{
  FALSE,
  TRUE
}bool_t;

typedef enum{
  NONE,
  LEFT,
  RIGHT,
  TOP,
  BOTTOM
}edge_t;

typedef enum{
  NO_COLLISION,
  BALL_COLLISION,
  POCKET_COLLISION,
  CUE_COLLISION,
  TABLE_COLLISION
}event_t;

struct vector{
  long long x;
  long long y;
};

/*
// Every ball has the following properties
//   Position (x,y) - The centre of the circle
//   Velocity vector (x,y) - This is positive for a ball moving right and/or
//     down, and negative for a ball moving left and/or up.
//   Radius
//   Visibility state
*/
typedef enum {
  BALL_VISIBLE = 0,
  BALL_INVISIBLE = 1
}BallState_e;

struct ball_t{
  struct vector pos;
  struct vector vel;
  long long radius;
  BallState_e ballState;
  unsigned char colour;
};

#endif /* _TYPES_H */
